// 表单验证方法

export default {
  // 检查姓名
  checkName (rule, value, callback) {
    if (value === '') {
      callback(new Error('姓名不能为空'))
    } else if (/\d/.test(value)) {
      callback(new Error('姓名不能包含数字'))
    } else {
      callback()
    }
  },
  // 验证电话
  checkPhone (rule, value, callback) {
    if (value === '') {
      callback(new Error('电话不能为空'))
    } else if (!(/^1[3456789]\d{9}$/.test(value))) {
      callback(new Error('请输入正确的手机号'))
    } else {
      callback()
    }
  },
  // 验证密码
  checkPassWord (rule, value, callback) {
    if (value === '') {
      callback(new Error('密码不能为空'))
    } else if (!(/^(?![0-9]+$)(?![a-zA-Z]+$)[0-9A-Za-z]{6,16}$/.test(value))) {
      callback(new Error('密码长度为6-16位，并且包含：字母 + 数字'))
    } else {
      callback()
    }
  },
  // 验证油枪
  validateGunNo (rule, value, callback) {
    if (value === '') {
      callback(new Error('油枪号不能为空'))
    } else if (!(/(^[1-9]\d*$)/.test(value))){
      callback(new Error('油枪号只能为正整数'))
    } else {
      callback()
    }
  },
  // 邮箱校验
  validateEmail (rule, value, callback) {
    const reg = /^[a-zA-Z0-9_-]+@[a-zA-Z0-9_-]+(\.[a-zA-Z0-9_-]+)+$/
    if(value === ''){
      callback(new Error('请输入邮箱'))
    }else if(!reg.test(value)){
      callback(new Error('请输入正确的邮箱'))
    }else{
      callback()
    }
  },
  // 纳税人识别号
  validateSellerTaxNo (rule, value, callback) {
    const reg = /^[0-9a-zA-Z]+$/
    if(value === ''){
      callback(new Error('请输入纳税人识别号'))
    }else if(!reg.test(value)){
      callback(new Error('请输入正确的格式'))
    }else{
      callback()
    }
  },
  // usf校验密码
  validetePassword (rule, value, callback) {
    const reg = /^[a-zA-Z0-9！@#-_]{8,20}$/

    // 校验连续字符
    function validateContinue (str) {
      for (let i = 0; i < str.length; i++) {
        let num = str[i].charCodeAt()
        let continueStr = str[i] + String.fromCharCode(num + 1) + String.fromCharCode(num + 2) + String.fromCharCode(num + 3)
        if (continueStr === (str[i] + str[i + 1] + str[i + 2] + str[i + 3])) return continueStr
      }
      return ''
    }

    if (/(.)\1\1\1/.test(value)) {
      callback(new Error('请勿连续出现4个及以上重复字符'))
    } else if (!reg.test(value)) {
      callback(new Error('请输入正确格式的密码'))
    } else {
      if ((/[a-z]/.test(value) + /[A-Z]/.test(value) + /[0-9]/.test(value) + /[_！@#-]/.test(value)) < 2) {
        callback(new Error('密码必须同时含有大小写字母、数字、特殊字符中的两种'))
      } else {
        let str = validateContinue(value)
        if (str) {
          callback(new Error(`存在连续字符${str}`))
        } else {
          callback()
        }
      }
    }  
  }
}